﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using OrmAuto;

public partial class Contents_NewLogin : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            QuerierLight qLight = new QuerierLight();
            myRbTipoDitta.DataTextField = "Tipo";
            myRbTipoDitta.DataValueField = "ID";
            myRbTipoDitta.DataSource = qLight.getTipoDitte();
            myRbTipoDitta.DataBind();

            myDropStatoLegale.DataTextField = "STATO_stato";
            myDropStatoLegale.DataValueField = "STATO_id";
            myDropStatoLegale.DataSource = qLight.getStati();
            myDropStatoLegale.DataBind();
        }
    }//fM

    protected void CreateUserWizard1_CreatingUser(object sender, LoginCancelEventArgs e)
    {
        this.myHiddenUserName.Value = this.CreateUserWizard1.UserName;
    }//fM

    //bottone finale
    protected void CreateUserWizard1_ContinueButtonClick(object sender, EventArgs e)
    {
        Response.Redirect("~/Contents/DatiUtente.aspx");
    }//fM

    private bool creaDatiUtente()
    {
        if (!myCheckConsensoLegge.Checked)
        {
            myLiteralMsg.Text = "Serve il Consenso al trattamento dati personali";
            return false;
        }
        if (string.IsNullOrEmpty(this.myHiddenUserName.Value))
        { myLiteralMsg.Text = "Errore : utente non trovato.."; return false ; }

        int idTipoDitta = 0;
        if(!int.TryParse(myRbTipoDitta.SelectedValue,out idTipoDitta ))
        {
           myLiteralMsg.Text ="Selezionare una tipologia di ditta...";
            return false;
        }

        if (myDropStatoLegale.SelectedValue == "0")
        {
            myLiteralMsg.Text = "Selezionare uno stato";
            return false;
        }

        //Security sec = new Security(); 
        var piva = myTxtPIVA.Text.Trim();
        var ragSoc = myTxtRagSoc.Text.Trim();
        var città = this.myTxtCittà.Text;
        var indirizzo = this.myTxtIndirizzo.Text;
        var idStato = int.Parse(myDropStatoLegale.SelectedValue);

        if (string.IsNullOrEmpty(indirizzo))
        { myLiteralMsg.Text = "Indirizzo mancante..."; return false ; }

        if (string.IsNullOrEmpty(città))
        { myLiteralMsg.Text = "Città mancante..."; return false ; }

        try
        {
            using (var DAL = new LayerBaseEF().getDAL())
            {
                var utente = DAL.Users.Where(u => u.UserName == this.myHiddenUserName.Value).FirstOrDefault();
                var key = utente.PasswordSalt;

                var dU = DatiUtenti.CreateDatiUtenti(utente.UserId, indirizzo, città);
                dU.Users = utente;
                dU.RagSoc = ragSoc;
                dU.Piva = piva;
                dU.TipoDitte = DAL.TipoDitte.Where(td => td.ID == idTipoDitta).FirstOrDefault();
                dU.STATI = DAL.STATI.Where(s => s.STATO_ID == idStato).FirstOrDefault();

                //disabilito l'utente ed aspetto la sua email per verifica
                //utente.Enabled = false ; //già disabilitato

                DAL.SaveChanges();

                Mailer mail = new Mailer();
                var query = "i=" + Server.UrlEncode(utente.UserId.ToString()) + "&k=" + Server.UrlEncode(key);
                mail.sendLinkUtenteNuovoIscritto(utente.Email, utente.UserName, query);

                return true;
            }

        }
        catch (Exception ex)
        {
            this.myLiteralMsg.Text = "Errore : " + ex.Message;
            return false;
        }
        finally
        {
            System.Web.Security.FormsAuthentication.SignOut();
        }
    }//fM

    protected void CreateUserWizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
    {
        var nome = CreateUserWizard1.ActiveStep.Name;
        if (nome.Equals("dati ditta", StringComparison.CurrentCultureIgnoreCase))
        {
            e.Cancel = !creaDatiUtente();
        }
        
    }//fM

    protected void CreateUserWizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
    {
        //var piva = TxtPIVA.Text;
    }//fM

    protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
    {

    }//fM

    protected void CreateUserWizard1_CreateUserError(object sender, CreateUserErrorEventArgs e)
    {

    }
}//fC
